#include<stdio.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<unistd.h>

int main()
{
     pid_t id = fork();
     //如果不创建子进程，那么替换的只能是父进程，这样替换子进程而不影响父进程  
     //因为想让父进程聚焦再读取数据，解析数据，指派进程执行代码的功能
     if (id == 0)
     {
         //子进程---子进程加载新程序的时候，是写入，发生写时拷贝并将父子代码分离
         //父子进程再代码和数据上就彻底分开了
         
         //ls-a-l
         printf("子进程开始运行，pid：%d\n", getpid());
         sleep(3);
         execl("/user/bin/ls", "ls", "-a", "-l", NULL);
         exit(1);                             
     }
     else
     {
         //父进程
         printf("父进程开始运行，pid：%d\n", getpid());
         int status = 0;
         pid_t id = waitpid(-1, &status, 0);//阻塞等待,一定是子进程先运行完毕，父进程获取之后才退出！
         if (id > 0)
         {
              printf("wait success ,exit code:%d\n", WEXITSTATUS(status)); 
         }

     }

    return 0;
}
